package nl.utwente.eemcs.graph;

/**
 * Composite nodes are nodes, in which multiple nodes are grouped, such as parallel constructs, conditional and partitions
 * @author Evert Duipmans
 */
public abstract class CompositeNode<T1 extends Node, T2 extends Node> extends Node {
	/**
	 * Initialize a composite node, with a name
	 * @param name Name of the node
	 */
	public CompositeNode(String name) {
		super(name);
	}
	
	/**
	 * Get the start node of the composite construct
	 * @return The start node
	 */
	public abstract T1 getStartNode();
	
	/**
	 * Get the end node of the composite construct
	 * @return The end node
	 */
	public abstract T2 getEndNode();
}
